
function flat_reduce(arr){
    return arr.reduce((res,item)=>{
        if(!Array.isArray(item)){
           res.push(item)
        }else{
            res=res.concat(...flat(item))
        }
        return res
    },[])
}

function flat_some(arr){
    let res=[]
    
}
_curry=function(fn,...args){
    let context=this
    let length=fn.length
    let argArr=args.concat()
    let res=function(..._args){
        argArr=argArr.concat(_args)
        if(argArr.length>=length){
            return fn.apply(context,argArr)
        }else{
            return res
        }
    }
    return res
}
let add=function(a,b,c,d){return a+b+c+d}
console.log(_curry(add)(1))